package controller.util;

import aplication.Rotulador;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.stage.FileChooser;

/*
 * @author Adriano
 * Não esta sendo utilizado
 * APENAS VERSAO PRÓ
 */
public class CarregadorDeImagem {
    private Logger LOGGER;
    private FileChooser fileChooser;

    private CarregadorDeImagem() {
        fileChooser = new FileChooser();
        fileChooser.setTitle("Selecionar Imagem");
        fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
        fileChooser.getExtensionFilters().addAll(
                new FileChooser.ExtensionFilter("JPG", "*.jpg"),
                new FileChooser.ExtensionFilter("PNG", "*.png"));
        LOGGER = Rotulador.getLOGGER();
    }

    public static CarregadorDeImagem getInstance() {
        return CarregaroDeImagemHolder.INSTANCE;
    }

    private static class CarregaroDeImagemHolder {

        private static final CarregadorDeImagem INSTANCE = new CarregadorDeImagem();
    }

    public FileChooser getFileChooser() {
        return fileChooser;
    }

    /**
     * Salvar a imagem carregada na pasta do jogo
     */
    public String salvar(File file) throws IOException {
        File dir = new File(System.getProperty("user.home") + "\\Documents\\My Games\\rotulador\\imagens");
        dir.mkdirs();
        File f = new File(dir, file.getName());
        f.createNewFile();
        FileChannel sourceChannel = null;
        FileChannel destinationChannel = null;
        try {
            sourceChannel = new FileInputStream(file).getChannel();
            destinationChannel = new FileOutputStream(f).getChannel();
            sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
           
            return f.toString();
        } finally {
            LOGGER.logp(Level.INFO, getClass().getName(),"salvar", "Imagem tranferida com sucesso"+f.getPath()+f.getName());
            if (sourceChannel != null && sourceChannel.isOpen()) {
                sourceChannel.close();
            }
            if (destinationChannel != null && destinationChannel.isOpen()) {
                destinationChannel.close();
            }
        } 
    }
}
